package org.acervus.usuario;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.acervus.conexao.ConnMySQL;
import org.acervus.helpers.DateUtils;

/**
* @author Eziel Soares, Giordano Giuliano, Lenilson Regis
 */

public class UsuarioController {

    PreparedStatement pstm;
    ResultSet rs;
    String buscarUsuario = "SELECT * FROM usuarios WHERE nome LIKE ? ORDER BY nome";
    String cadastrarUsuario = "INSERT INTO usuarios (login, senha, nome, email, data_nasc, endereco, bairro, cidade, uf, "
            + "telefone, celular, tel_recado, nome_recado, data_cadastro) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    String alterarUsuario = "UPDATE usuarios SET login = ?, senha = ?, nome = ?, email = ?, data_nasc = ?, endereco = ?, "
            + "bairro = ?, cidade = ?, uf = ?, telefone = ?, celular = ?, tel_recado = ?, nome_recado = ?, data_cadastro = ?"
            + "WHERE id = ?";
    
    public UsuarioController() {
    }
    
    public void alterarUsuario(UsuarioBean usuario) {
        try {
            ConnMySQL acervusbd = new ConnMySQL();
            pstm = acervusbd.doConnect().prepareStatement(alterarUsuario);
            pstm.setString(1, usuario.getLogin());
            pstm.setString(2, usuario.getSenha());
            pstm.setString(3, usuario.getNome());
            pstm.setString(4, usuario.getEmail());
            
            DateUtils data_nasc = new DateUtils(usuario.getDataNasc());
            pstm.setString(5, data_nasc.getDataISO());
            
            pstm.setString(6, usuario.getEndereco());
            pstm.setString(7, usuario.getBairro());
            pstm.setString(8, usuario.getCidade());
            pstm.setString(9, usuario.getUf());
            pstm.setString(10, usuario.getTelefone());
            pstm.setString(11, usuario.getCelular());
            pstm.setString(12, usuario.getTelRecado());
            pstm.setString(13, usuario.getNomeRecado());
            // pstm.setString(14, usuario.getDataCadastro());
            pstm.setInt(14, usuario.getId());
            pstm.executeUpdate();
            acervusbd.doDesconnect();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public void cadastrarUsuario(UsuarioBean usuario) {
        try {
            ConnMySQL acervusbd = new ConnMySQL();
            pstm = acervusbd.doConnect().prepareStatement(cadastrarUsuario);
            pstm.setString(1, usuario.getLogin());
            pstm.setString(2, usuario.getSenha());
            pstm.setString(3, usuario.getNome());
            pstm.setString(4, usuario.getEmail());
            pstm.setString(5, usuario.getDataNasc());
            pstm.setString(6, usuario.getEndereco());
            pstm.setString(7, usuario.getBairro());
            pstm.setString(8, usuario.getCidade());
            pstm.setString(9, usuario.getUf());
            pstm.setString(10, usuario.getTelefone());
            pstm.setString(11, usuario.getCelular());
            pstm.setString(12, usuario.getTelRecado());
            pstm.setString(13, usuario.getNomeRecado());
            pstm.setString(14, usuario.getDataCadastro());
            pstm.executeUpdate();
            acervusbd.doDesconnect();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public List<UsuarioBean> listarUsuario(String nome) {
        List<UsuarioBean> usuario = new ArrayList();
        Date data;
        String dataBr;
        
        try {
            ConnMySQL acervusbd = new ConnMySQL();
            pstm = acervusbd.doConnect().prepareStatement(buscarUsuario);
            pstm.setString(1, nome); // "SELECT * FROM USUARIO WHERE NOME LIKE eziel"
            rs = pstm.executeQuery();
            UsuarioBean usu;
            while (rs.next()) {
                usu = new UsuarioBean();
                usu.setId(rs.getInt("id"));
                usu.setLogin(rs.getString("login"));
                usu.setSenha(rs.getString("senha"));
                usu.setNome(rs.getString("nome"));
                usu.setEmail(rs.getString("email"));
                
                data = new SimpleDateFormat("yyyy-MM-dd").parse(rs.getString("data_nasc"));  
                dataBr = new SimpleDateFormat("dd/MM/yyyy").format(data);  
                usu.setDataNasc(dataBr);
                
                usu.setEndereco(rs.getString("endereco"));
                usu.setBairro(rs.getString("bairro"));
                usu.setCidade(rs.getString("cidade"));
                usu.setUf(rs.getString("uf"));
                usu.setTelefone(rs.getString("telefone"));
                usu.setCelular(rs.getString("celular"));
                usu.setTelRecado(rs.getString("tel_recado"));
                usu.setNomeRecado(rs.getString("nome_recado"));
                
                data = new SimpleDateFormat("yyyy-MM-dd").parse(rs.getString("data_cadastro"));  
                dataBr = new SimpleDateFormat("dd/MM/yyyy").format(data);
                usu.setDataCadastro(dataBr);
                
                usuario.add(usu);
            }
            acervusbd.doDesconnect();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return usuario;
    }
}
